package net.esj.basic.dao.jdbc.jpa;
/**
 * 管理session。
 * 这里的所有仅仅是为了简单的模仿hibernate，除了不包含一些复杂特性外，关联和HQL也都不支持，
 * 为了省事仅支持注解方式。
 * 我们另外设计了一套内容，包含数据库结构管理和数据管理的程序在yqfw2项目下。
 */
public interface SessionFactory {
	ConnectionProvider getConnectionProvider();
	void setConnectionProvider(ConnectionProvider connectionProvider);
	/**
	 * 创建一个session对象。
	 * 一个session对象类似一个数据库链接，执行对java对象和数据库数据的映射。
	 * @return
	 */
	Session openSession();
	/**
	 * 获取一个映射对象，该对象保存实体类和表之间的映射关系。
	 * @param entityType
	 * @return
	 */
	TableBeanMapping getTableBeanMapping(Class entityType);
	/**
	 * 注册需要管理的实体类。
	 * @param entityType
	 */
	void registerEntityType(Class entityType);
}
